Providing access to managed content

ABSTRACT

A method for providing local access to managed content is disclosed. The method comprises receiving from a remote host a request to perform an operation with respect to content associated with a set of managed content and obtaining information required to respond to the request. The method further comprises providing in response to the request a content locator usable to perform the requested operation through direct communication with a content system through which the content is accessible.

CROSS-REFERENCE TO OTHER APPLICATIONS

This application is a continuation of, and claims a benefit of priorityunder 35 U.S.C. § 120 of the filing date of U.S. patent application Ser.No. 17/201,920 filed Mar. 15, 2021, issued as U.S. Pat. No. 11,388,251,entitled “PROVIDING ACCESS TO MANAGED CONTENT,” which is a continuationof, and claims a benefit of priority under 35 U.S.C. § 120 of the filingdate of U.S. patent application Ser. No. 16/525,204 filed Jul. 29, 2019,issued as U.S. Pat. No. 10,958,752, entitled “PROVIDING ACCESS TOMANAGED CONTENT,” which is a continuation of, and claims a benefit ofpriority under 35 U.S.C. § 120 of the filing date of U.S. patentapplication Ser. No. 15/677,732 filed Aug. 15, 2017, issued as U.S. Pat.No. 10,404,821, entitled “PROVIDING ACCESS TO MANAGED CONTENT,” which isa continuation of, and claims a benefit of priority under 35 U.S.C. §120 of the filing date of U.S. patent application Ser. No. 15/003,595filed Jan. 21, 2016, issued as U.S. Pat. No. 9,769,278, entitled“PROVIDING LOCAL ACCESS TO MANAGED CONTENT,” which is a continuation of,and claims a benefit of priority under 35 U.S.C. § 120 of the filingdate of U.S. patent application Ser. No. 13/869,864, filed Apr. 24,2013, issued as U.S. Pat. No. 9,304,966, entitled “PROVIDING LOCALACCESS TO MANAGED CONTENT,” which is a continuation of, and claims abenefit of priority under 35 U.S.C. § 120 of the filing date of U.S.patent application Ser. No. 11/229,317 filed Sep. 15, 2005, issued asU.S. Pat. No. 8,447,827, entitled “PROVIDING LOCAL ACCESS TO MANAGEDCONTENT.” All applications listed in this paragraph are herebyincorporated by reference herein for all purposes.

BACKGROUND OF THE INVENTION

Content management systems provide the capability of managing contentincluding typically the ability to search a body of stored content andretrieve particular content of interest. Additional functionalityprovided by a content management system may include, without limitation,tracking revisions, versions, review, approvals, distribution, lifecycle and retention policy information, file name, file type, filecreator, application used to create, owner, and any other data and/ormetadata associated with stored content. In a typical content managementsystem, a request from a user to retrieve content, such as a particularfile, version, or other stored object, results in the content managementsystem obtaining the requested content from a content storage location,e.g., a content server, and providing the requested content to the user.Because the content management system has limited throughput, thismiddleman role limits the performance of data delivery to and from thecontent server or other storage location. This is especially notablewhen a user makes a number of requests for the same content over a shortperiod of time. It would be beneficial to be able to utilize theadvantages of a content management system without suffering theperformance limitations the content management system can impose.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a block diagram illustrating a typical prior art system forproviding access to managed content.

FIG. 2 illustrates an embodiment of a typical prior art process forproviding access to managed content.

FIG. 3 is a block diagram illustrating an embodiment of a system forproviding direct access to managed content.

FIG. 4 illustrates an embodiment of a process for providing directaccess to managed content.

FIG. 5 is a block diagram illustrating an embodiment of a system forproviding local access to managed content.

FIG. 6A is a block diagram illustrating an embodiment of a remotesystem.

FIG. 6B is a block diagram illustrating an embodiment of a remotesystem.

FIG. 7 is a block diagram illustrating an embodiment of a contentmanagement system.

FIG. 8 is a block diagram illustrating an embodiment of a contentsystem.

FIG. 9 is a block diagram illustrating an embodiment of a local contentsystem.

FIG. 10 illustrates an embodiment of a process for providing localaccess to managed content.

FIG. 11 illustrates an embodiment of a process for accessing managedcontent locally.

FIG. 12 illustrates an embodiment of a process for providing localaccess to managed content.

FIG. 13 illustrates an embodiment of a process for providing localaccess to managed content.

FIG. 14 illustrates an embodiment of a process for accessing managedcontent locally.

FIG. 15 illustrates an embodiment of a process for providing localaccess to managed content.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess, an apparatus, a system, a composition of matter, a computerreadable medium such as a computer readable storage medium or a computernetwork wherein program instructions are sent over optical or electroniccommunication links. In this specification, these implementations, orany other form that the invention may take, may be referred to astechniques. A component such as a processor or a memory described asbeing configured to perform a task includes both a general componentthat is temporarily configured to perform the task at a given time or aspecific component that is manufactured to perform the task. In general,the order of the steps of disclosed processes may be altered within thescope of the invention.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

Providing local access to managed content is disclosed. A remote systemsends to a content management system a request associated withparticular content, such as a request to retrieve and/or store (write)particular content. Information required to respond to the request isobtained from a content system. One or more content locators, based atleast in part on the information obtained from the content system, areprovided to the remote system. Each of the one or more content locatorsenables the remote system to retrieve the requested content locally fromone of a plurality of local content systems, such as a local cacheserver, or directly write to one of a plurality of local contentsystems, as applicable. The local content system is selected as the bestto interact with the remote system based on criteria such as distancefrom the remote system to the selected local content system, availablebandwidth for the given selected local content system, speed of accessbetween the remote system and the selected local content system, or anyother relevant metric. In some embodiments, one or more remote hosts areassociated with a local cache server at which recently and/or frequentlyaccessed managed content is stored, e.g., to enable such content to beaccessed directly from the local cache more quickly and/or efficientlythan if the remote system were required to access the content indirectlythrough a content management system or directly from a more distantcontent server, such as a primary content server that serves as aprimary repository for the content. In some embodiments, content madeaccessible directly from a local content system comprises a cached copyof corresponding content stored at a primary or other non-local contentsystem. The cached copy is synchronized, e.g., periodically, as changesto the content occur either at the local or the non-local contentsystem, or otherwise, to maintain the integrity and state of the contentand to make the most up-to-date content available to users of thecontent.

FIG. 1 is a block diagram illustrating a typical prior art system forproviding access to managed content. In the example shown, remote system100 is connected to network 102. Content management system 104 isconnected to network 102 and content system 106. Remote system 100 maybe geographically remote from or geographically near to contentmanagement system 104. Network 102 may be a local area network, a widearea network, a wireless network, a wired network, the internet, or anyother network for connecting systems. Content management system 104 maybe connected to content system 106 using a direct connection, a localarea network, a wide area network, or any other network for connectingsystems. In some embodiments, content management system 104 and contentsystem 106 are both implemented in one physical computer system. In someembodiments, content system 106 is implemented in one or more physicalcomputer systems which each include one or more storage devices. In atypical approach, a user of remote system 100 communicates to contentmanagement system 104 via network 102 a request to retrieve content. Therequest may be for a specific stored object, e.g., a file identified bya unique identifier, or search criteria—e.g., word processing documentsauthored by a specified person on a specified date—may be provided. Ifspecific content is identified, content management system 104 typicallyretrieves the content from content system 106 and sends the content toremote system 100 via network 102. In the case of a less specificrequest, e.g., a query to locate content that satisfies one or morecriteria specified in the request, the content management system 104typically obtains from content system 106 data and/or metadataassociated with those stored objects, if any, that satisfy the criteria.Content system 106 typically maintains a database comprising metadataassociated with the managed content and uses the metadata to identifystored objects that satisfy the criteria defined by the requesting user.All or a portion of the data or metadata returned by the content system106 to the content management system 104, or other data derived at leastin part from the returned data, is provided by content management system104 to remote system 100. A user may subsequently use the data providedto request retrieval of a particular stored object.

FIG. 2 illustrates an embodiment of a typical prior art process forproviding access to managed content. In the example shown, in 200 arequest for content is received at the content management system. In202, the requested content is obtained by the content management systemfrom the content system. In 204, the requested content is forwarded tothe remote system from the content management system. As describedabove, the two step transfer approach shown in FIG. 2 , in whichrequested content is first sent from the content system to the contentmanagement system and then sent by the content management system to theremote host that requested the content, can result in unwanted delay,especially in the case of large files and/or slow data transmission dueto geographic remoteness of the remote host, limited transmission pathcapacity (bandwidth), high traffic, etc. and also especially when largefiles are accessed multiple times over a short period of time.

FIG. 3 is a block diagram illustrating an embodiment of a system forproviding direct access to managed content. In the example shown, remotesystem 300 is connected to network 302. In various embodiments, network302 includes a local area network, a wide area network, a wirelessnetwork, a wired network, the internet, an intranet, and/or any othernetwork for connecting systems. Content management system 304 isconnected to network 302 and content system 306. Content system 306 isconnected to content management system 304 and network 302. In variousembodiments, content management system 304 is connected to contentsystem 306 using a direct connection, a local area network, a wide areanetwork, the internet, an intranet, and/or any other network forconnecting systems. In some embodiments, content management system 304does not have a connection to content system 306 except through network302, and the content management system 304 and content system 306exchange data via network 302. In some embodiments, content managementsystem 304 and content system 306 are both implemented in one physicalcomputer system. In various embodiments, remote system 300 isgeographically remote from or geographically near to content managementsystem 304. In some embodiments, remote system 300 is one of a pluralityof hosts able to access content management system 304 via network 302.In some embodiments, content system 306 is implemented in one or morephysical computer systems each of which includes one or more storagedevices. In some embodiments, content management system 304 does not actas a middleman by obtaining requested content from content system 306and forwarding the content on to the remote system 300. Instead, for atleast some requests (e.g., for objects larger than a threshold size),the content management system 304 is configured to obtain from thecontent system 306, and content system 306 is configured to provide,data required by the content management system 304 to form a URL orother identifier, locator, etc. to be provided by the content managementsystem 304 to the remote host 300 to enable the remote host 300 toobtain the requested content directly from the content system 306.

FIG. 4 illustrates an embodiment of a process for providing directaccess to managed content. In some embodiments, the process of FIG. 4 isimplemented on a content management system, such as content managementsystem 304 of FIG. 3 . In the example shown, in 400 a request forcontent is received. In some embodiments, the request is received at acontent management system from a remote system, e.g., from a browser,client, or other application running on the remote system. In 402,information required to respond to content request is obtained from acontent system. In some embodiments, at 402 a content management systemthat received the request received at 400 sends to the content system aquery associated with the requested content and receives response datafrom the content system. In 404, a content locator based at least inpart on the information obtained in 402 is forwarded to the remotesystem from the content management system. The content locator enablesthe remote system to obtain the requested content directly from thecontent server by using the content locator, e.g., a URL, to request thecontent directly from the content server, without the content firstpassing through the content management system. In some embodiments,obtaining content directly includes data transfers through multipleintermediate nodes of a data communication network such as the internet,a local area network, a wide area network, or any other network fortransferring data, with the transfer originating from the content serverand terminating at the remote host without first being sent to thecontent management system.

FIG. 5 is a block diagram illustrating an embodiment of a system forproviding local access to managed content. In the example shown, remotesystem 500 is connected to external network 502 via local network 510.In various embodiments, local network 510 comprises an internal network,such as a local area network, intranet, etc. and/or a portion of one ormore private or public networks, such as the internet. In variousembodiments, network 502 includes one or more of the following: a localarea network, a wide area network, a wireless network, a wired network,the internet, an intranet, and/or any other network for connectingsystems. In some embodiments, networks 502 and 510 comprise portions ofthe same network or an integrated and/or interconnected plurality ofnetworks. Content management system 504 is connected to network 502 andcontent system 506. Content system 506 is connected to external network502. In various embodiments, content management system 504 is connectedto content system 506 using a direct connection, a local area network, awide area network, the internet, an intranet, and/or any other networkfor connecting systems. In some embodiments, content system 506 does nothave a connection to network 502. In some embodiments, contentmanagement system 504 does not have a connection to content system 506except through network 502, and the content management system 504 andcontent system 506 exchange data via network 502. In some embodiments,content management system 504 and content system 506 are bothimplemented in one physical computer system. In various embodiments,remote system 500 is geographically remote from or geographically nearto content management system 504.

Local content system 508 is connected to local network 510 in theexample shown. In some embodiments, local system 508 comprises a localcache server. Content in local content system 508 in some embodimentsincludes locally cached content that is managed by content managementsystem 504, and in various embodiments contains files, objects,metadata, or other data that is also contained in content system 506. Insome embodiments, content management system 504 authenticates a remotesystem, or the user of the remote system, including checking that theremote system, or the user of the remote system, has permission toaccess the requested content from or store the requested content tolocal content system 508. In some embodiments, local content system 508is one of a plurality of systems containing content managed by contentmanagement system 504. A local content system is selected to interactwith remote system 500 based on criteria such as distance from remotesystem 500, available bandwidth for the given local content system,speed of access between remote system 500 and the local content system508, or any other relevant metric. In some embodiments, a locator or aprioritized list of locators usable to read content from or write(store) content to one or more local content systems is provided toremote system 500 by content management system 504 based at least inpart on information—including, for example, candidate file(s) orobject(s) location(s), local content system distances from remote system500, bandwidth access to local content system(s), and candidate file(s)or object(s) attributes (e.g. encryption and/or compressioncharacteristics)—received from content system 506. In some embodiments,local content system 508 comprises a local cache server associated witha geographic or other area, region, sub-network, etc. with which remotesystem 500 is associated, and in some such embodiments requests fromremote system 500 to perform operations with respect to content managedby content management system 504 and/or stored in content system 506 areserviced by providing to remote system 500 a URL and/or other datausable by remote system 500 to perform an operation it has requested toperform with respect to specific managed content, such as retrieveand/or writing such content.

Upon receiving from remote system 500 a request to perform an operationwith respect to managed content, such as a request to retrieve aparticular stored object, content management system 504 obtains fromcontent system 506 data required to respond. In some embodiments,content system 506 and/or content management system 504 maintains and/orhas access to a database, service, and/or other source of informationconcerning which objects comprising the content managed by contentmanagement system 504 and/or stored by content system 506, asapplicable, currently is available from local content system 508 and, insome embodiments, whether the content as currently stored at localcontent system 508 is fully synchronized with a corresponding masterobject stored at content system 506. If the content is not currentlystored at the local content system, in some embodiments a copy is pushedto the local content system 508, e.g., via network 502 and/or localnetwork 510 in the example shown, to enable remote system 500 to performthe requested operation with respect to the content through directcommunication with local content system 508. In some embodiments, ifrequested content as stored at local content system 508 is not fullysynchronized with a corresponding master object stored at content system506, the content as stored at local content system 508 is synchronizedwith the master object prior to responding to the request. In variousembodiments, if requested content is not currently available from alocal content system associated with the requesting host and/or a copyas stored at the local content system is not fully synchronized, thecontent management system 504 responds to the request by providing tothe remote system 500 a response that includes a locator and/or otherdata usable by the remote system 500 to obtain the content throughdirect communication with the local content system 508, which then usesat least a portion of the locator and/or other data to obtain fromcontent system 506—in various embodiments through content managementsystem 504 and/or directly from content system 506—the content and/orupdated portions thereof, as applicable, required to provide therequested content to remote system 500.

In some embodiments, remote system 500 is one of a plurality of hostsable to access content management system 504 via network 502. In someembodiments, content system 506 and/or local content system 508 areimplemented in one or more physical computer systems each of whichincludes one or more storage devices. In some embodiments, contentmanagement system 504 does not act as a middleman by obtaining requestedcontent from content system 506 or local content system 508 andforwarding the content on to the remote system 500. Instead, for atleast some requests (e.g., for objects larger than a threshold size),the content management system 504 is configured to obtain from thecontent system 506, and content system 506 is configured to provide,data required by the content management system 504 to form one or moreURL's or other identifiers, locators, etc. to be provided by the contentmanagement system 504 to the remote host 500 to enable the remote host500 to obtain the requested content locally from the local contentsystem 508.

FIG. 6A is a block diagram illustrating an embodiment of a remotesystem. In the example shown, remote system 600 includes browser 602 andcommunication interface 604. Browser 602 interacts with a user to obtaininformation for and provide information from the remote system. In someembodiments, browser 602 interacts with the user by displayinginformation on a monitor and by receiving information from the user froma keyboard and/or a mouse. Communication interface 604 is used tocommunicate with a connected network, such as network 502 or localnetwork 510 of FIG. 5 . In some embodiments, remote system 500 includesstorage devices and/or memory, not shown in FIG. 6A, to storeinformation, and one or more processors to process information. Invarious embodiments, browser 602 comprises an internet browser,Microsoft Internet Explorer™, Mozilla Firefox™, a Microsoft Outlook™ orOffice™ plug-in, or any other application interfacing with the user andallowing navigation of a stored set of content. In some embodiments,browser 602 and communication interface 604 are used to exchange datawith a content management system, such as content management system 504of FIG. 5 , which in various embodiments comprises a web or otherapplication server or another system configured to manage storedcontent. In some embodiments, browser 602 and communication interface604 are used to send to a content management system a request forcontent, receive from the content management a response comprising datausable to obtain the requested content directly from a local contentsystem, e.g., one of a plurality of local content systems (e.g., one ormore URL's or other locators or identifiers), and request and obtain therequested content directly from a local content system or one of aplurality of local content systems. In various embodiments, remotesystem 600 is implemented using one computer system, multiple computersystems, or any other appropriate hardware and software systems.

FIG. 6B is a block diagram illustrating an embodiment of a remotesystem. In the example shown, remote system 606 includes browser 608,client 610 and communication interface 612. Browser 608 interacts with auser to obtain information for and provide information from the remotesystem. In some embodiments, browser 608 interacts with the user bydisplaying information on a monitor and by receiving information fromthe user from a keyboard and/or a mouse. Communication interface 612 isused to communicate with a connected network. In some embodiments,remote system 606 includes storage devices and/or memory to storeinformation and one or more processors to process information. In theexample shown, client 610 is spawned by browser 608 to handle at leastcertain aspects of the interaction with the content management systemand/or the content system or local content system. In some embodiments,client 610 provides functionality beyond the functionality it would bepractical and/or possible to provide using browser 608 alone to interactwith the content management system and/or content system. In someembodiments, client 610 tracks the status of content transfers andhandles interrupted data transfers by resuming where the transfer wasinterrupted from the same or a different source. In some embodiments,client 610 handles the details of the data transfer by determiningand/or tracking the locations on the storage devices where the data iscoming from and to. In some embodiments, browser 608 is used to send arequest for content to the content management system and the contentmanagement system responds by sending to client 610 a URL or otherlocator usable by the client 610 to obtain the requested contentdirectly from the local content system. In some embodiments, client 610uses the URL or other locator to request and receive the content locallyfrom the local content system. In some embodiments, if the content isnot available already in the local content system, then the localcontent system will retrieve the requested content from a contentsystem, an alternate content system, or any other appropriate contentstorage location/system based at least in part on information in thecontent locator. In various embodiments, remote system 606 isimplemented using one computer system, multiple computer systems, or anyother appropriate hardware and software systems.

In some embodiments, remote system 606 spawns client 610 to receive thecontent locator (and/or a prioritized list of locators) and obtain thecontent from one of a plurality of local content systems using thecontent locator. Client 610 also handles errors, picks up data transfersfrom where they left off after an interruption, and retrieves contentfrom a different (e.g., backup, secondary, etc.) local content system ifthe original system is no longer available to transfer content. Inaddition, client 610 takes care of handshaking between the contentmanagement system and remote system 606 as well as the local contentsystem and the remote system 606. Client 610 manages the location thatdata is transferred to and from including the relevant folder locations,the file and/or object names, how to display the folders, and anydifferences required due to operating system conventions (e.g. differentnaming protocols, etc.). In some embodiments, client 610 handles adigital signature or other type of security that allows verification ofthe interaction between remote system 606 and the content managementsystem and between the between remote system 606 and the local contentsystem. In various embodiments, client 610 handles compression ordecompression and/or encryption or decryption of the transferred contentas appropriate. In some embodiments, client 610 reverts to the transferof content through the content management system in the event that it isnot possible (for file structure, access, or any other reason) totransfer content directly to or from the system.

FIG. 7 is a block diagram illustrating an embodiment of a contentmanagement system. In the example shown, content management system 700includes communication interface 708, web interface 702, content systeminterface 704, communication interface 706, and repository mapper 710.Web interface 702 is connected to communication interface 708.Communication interface 708 comprises a network interface card (NIC) orother interface. Web interface 702 interacts with one or more remotesystems to handle requests to read data from and/or write data to acontent system. Web interface 702 is connected to content systeminterface 704 to be able to obtain information required to handlecontent requests and requests to write content. Repository mapper 710determines which local caching servers are available from the list ofcandidate file(s)/object(s) locations and which local caching serversthose candidate file(s)/object(s) are associated with. In someembodiments, repository mapper 710 creates a repository map periodicallyand caches the map in order to reduce resources that would be requiredto create a repository map for each query. In some embodiments, contentmanagement system 700 checks whether a request to read data from and/orwrite data to a content system is allowed for the requestor. In someembodiments, content management system 700 has information delineatingpermissions for different users and/or remote systems regarding theirallowed operations for data including reading permissions, writingpermissions, editing permissions, and any other appropriate permissions.

In some embodiments, web interface 702 communicates via the Internetand/or one or more private and/or public networks, using communicationinterface 708. In some embodiments, web interface 702 includes a set ofweb tools and/or web development components. In some embodiments, webinterface 702 comprises a web application built using a web developmenttool or kit associated with content server interface 704. In someembodiments, content server interface 704 comprises a framework formanaging content for web or other applications running on contentmanagement system 700. In some embodiments, content server interface 704comprises classes of content management objects that web interface 702may be configured to invoke, as required, e.g., in a manner specified inan API (application programming interface) or other specification ordefinition, to accomplish content management related tasks, such asstoring, tracking, finding, retrieving, associating metadata with, andotherwise managing stored content. In some embodiments, content systeminterface 704 includes an API and/or a library that provides an API tothe content server. In some embodiments, web interface 702 and contentserver interface 704 comprise software code executed by one or moreprocessors associated with content management system 700.

Content system interface 704 is connected to a content server or othercontent system through communication interface 706. In some embodiments,content system interface 704 communicates with the content server usingcommunication interface 708 and communication interface 706 is omitted.In various embodiments, content management system 700 is implementedusing multiple computer systems, one computer system, or any otherappropriate hardware and software systems.

FIG. 8 is a block diagram illustrating an embodiment of a contentsystem. In the example shown, content system 800 includes content server802, accelerated content server 804, communication interface 806,communication interface 808, metadata database 810, and content store812. In some embodiments, content store 812 is used to store one or moresets of managed content managed by a content management system. In someembodiments, a set of managed content includes one or more storedcontent objects, such as documents, files, or other objects. In someembodiments, content server 802 is queried through communicationinterface 806 to search for relevant content to respond to a contentrequest. Content server 802 searches for the relevant content byinterrogating the metadata database 810 and/or the stored content incontent 812. In various embodiments, returned information from contentsystem 800 to content management system in regard to a content requestincludes information regarding the distance the content relevant to thecontent request is from the remote system or any other relevant metricto the remote system.

Accelerated content server 804 is accessed directly from a networkthrough communication interface 808 so that files can be directly readfrom and written to content store 812 by one or more local contentsystems. In some embodiments, direct access of an local content systemby a remote system through a network improves performance by avoidingmultiple data transfers through a content management system so that thecontent management system content is only accessed once, where the localcontent system is managed by a content management system so that contentin content system 800 and one or more local content systems are kept inappropriate states (e.g. up-to-date copies of files are kept in thecontent system and local content system(s)). In various embodiments,content system 800 is implemented using multiple computer systems, onecomputer system, or any other appropriate hardware and software systemsincluding data storage devices such as magnetic hard drives, tapedrives, semiconductor memory devices, optical data storage devices, orany mass or other storage device.

In some embodiments, metadata database 810 contains metadata informationabout the content in content store 812 and content in one or more localcaching stores. Examples of metadata include when and by whom documentswere created, modified, edited, reviewed, and approved; keywords relatedto documents; version data; routing and collaboration data; date/timethe content was created, modified, etc.; and data associating two ormore stored objects with each other, e.g., to create and manage a“virtual” document or object. In various embodiments, metadata alsoinclude information about distances between remote systems and localcontent systems or any other relevant metric that may affect theselection or prioritized listing of local content systems that areinteracted with by a remote system in response to a content request or arequest to write (store) content. In various embodiments, keywords inmetadata database 810 are entered by the creator, editor, modifier, orapprover of the document or by an automatic process or engine that scansthe document to extract or identify relevant keywords, such as by usingnatural language or other linguistic technologies to identify keyconcepts based on the words comprising the document.

In some embodiments, content server 802 maintains a file system or otherhierarchical organization or view of content in content store 812 andaccelerated content server 804 has no file system of its own and insteaduses the file system of content server 802 to read/write content from/tocontent store 812. In some embodiments, accelerated content server 804comprises a web server.

In some embodiments, content server 802 has information regarding files,documents, or objects that have been transferred out of content store812 and/or local caching stores, i.e., objects that have been “checkedout” for editing or other use by a user, enabling management of requestsfor content. In some embodiments, a content management system associatedwith the content server keeps track of which objects have been checkedout. In some such embodiments, a subsequent request to the contentmanagement system to retrieve an object that has been checked out andhas not yet been checked back in is denied, e.g., by sending a replyindicating the content is not currently available, is checked out to auser identified in the reply, etc.

In some embodiments, content system 800 tracks and/or has access to adatabase, service, and/or other resource that tracks, which data objectsare currently available from which local content store(s). In someembodiments, content system 800 tracks and/or determines periodicallyand/or at the time of responding to a query whether a local contentsystem associated with the request, e.g., one that has the requestedcontent and/or is associated with a remote host that made the request,is (or was the last time status was checked and/or reported) online or,in some embodiments, which of a plurality of local content systems ableto service the request is/are online.

FIG. 9 is a block diagram illustrating an embodiment of a local contentsystem. In the example shown, local content system 900 includescommunication interface 902, accelerated content server 904, and localcaching store 906. In some embodiments, in the event that the contentrequested using a content locator (or a prioritized list of contentlocators) is not available on local content system 900, local contentsystem will retrieve the requested content from a content system, analternate content system, or any other appropriate content store/systembased at least in part on information in the content locator. In someembodiments, local caching store 906 is used to store one or more setsof managed content managed by a content management system. In someembodiments, a set of managed content includes one or more storedcontent objects, such as documents, files, or other objects. In someembodiments, a remote system queries a content management system and thecontent management system replies with information usable by the remotesystem to read or write content directly with local content system 900.Local caching store 906 is accessed by accelerated content server 904 toservice content requests received from a network through communicationinterface 902. In various embodiments, content management system selectslocal content system 900 as the appropriate system for a remote systemto interact with based on being closer in distance to the remote systemor because there is better access between local content system 900 andthe remote system. In some embodiments, local content system 900 isselected based on its relationship to the requesting host (e.g., each isassociated with the same branch office, geographic region, ISP, range ofIP addresses, etc.).

Accelerated content server 904 is accessed directly from a networkthrough communication interface 902 so that files can be directly readfrom and written to local caching store 906 in various embodiments by acontent management system, a content system, and/or a requesting host.In some embodiments, direct access of local content system 900 by aremote system through a network improves performance by avoiding datatransfers through a content management system. Even in an embodiment inwhich content is provided to the local content system initially via anindirect transfer from a primary content system first to a contentmanagement system and then from the content management system to thelocal content management system, efficiencies are realized as subsequentoperations requested by the remote system are performed through directcommunication with the local content system. In some embodiments, localcontent system 900 is managed by a content management system so thatcontent in a primary content system and one or more local contentsystems are kept in appropriate states (e.g. up-to-date copies of filesare kept in the content system and local content system(s)). In someembodiments, local content system 900 validates content from a contentsystem, a remote content system, or any other content system. In variousembodiments, local content system 900 is implemented using multiplecomputer systems, one computer system, or any other appropriate hardwareand software systems including data storage devices such as magnetichard drives, tape drives, semiconductor memory devices, optical datastorage devices, or any mass or other storage device.

In some embodiments, accelerated content server 904 maintains a filesystem or other hierarchical organization or view of content in localcaching store 906. In some embodiments, local content system 900 alsoincludes a content server and accelerated content server 904 has no filesystem of its own and instead uses the file system of the content serverto read/write content from/to local caching store 906. In someembodiments, accelerated content server 904 comprises a web server.

FIG. 10 illustrates an embodiment of a process for providing localaccess to managed content. In some embodiments, the process of FIG. 10is implemented on a content management system, such as contentmanagement system 504 of FIG. 5 . In the example shown, in 1000 arequest for content is received. In some embodiments, the request isreceived at a content management system from a remote system, e.g., froma browser, client, or other application running on the remote system. In1002, information required to respond to content request is obtainedfrom a content system. In some embodiments, at 1002 a content managementsystem that received the request received at 1000 sends to the contentsystem a query associated with the requested content and receivesresponse data from the content system. In some embodiments, the contentsystem is a primary content system associated with the requestedcontent, such as the content system 506 of FIG. 5 . In some embodiments,the content management system and/or content system is/are configured todetermine which, if any, local content system(s) is/are associated withthe host from which the request was received. In 1004, a content locator(or a list of prioritized locators) based at least in part on theinformation obtained in 1002 is forwarded to the remote system from thecontent management system. The content locator (or prioritized list oflocators) enables the remote system to obtain the requested contentdirectly from a local content system, or in some embodiments one of aplurality of local content systems, by using the content locator, e.g.,a URL, or a list of URL's, to request the content directly from thelocal content system. In some embodiments, the local content system mayhave to retrieve the requested content once from a content system, analternate content system, or any other appropriate content storageserver/system. In some embodiments, obtaining content locally and/ordirectly includes data transfers through multiple intermediate nodes ofa data communication network such as the internet, a local area network,a wide area network, or any other network for transferring data, withthe transfer originating from the local content system and terminatingat the remote host. In various embodiments, the local content system isselected from a plurality of local content systems based on distance tothe requesting remote system, bandwidth of a connection to therequesting remote system, access time from the requesting remote system,or on any other performance criteria for selecting an appropriate localcontent system. In some embodiments, the selection of a local contentsystem is based at least in part on information the content managementsystem receives from a content server.

FIG. 11 illustrates an embodiment of a process for accessing managedcontent locally. In some embodiments, the process of FIG. 11 isimplemented on a remote host, such as remote system 500 of FIG. 5 . Insome embodiments, the process of FIG. 11 is implemented at least in partby a browser, client, and/or other application, or any suitablecombination thereof. In the example shown, in 1100 a request for contentis sent to a content management system. The content request can be arequest for a specific file or object managed by the content managementsystem or a request for files or objects that satisfy one or morecriteria; for example, files or objects that were created by John Doe,files or objects that were signed by Jane Doe, or files or objects thatare related to email messages sent by Thomas Smith on a specific date.In 1102, a content locator (or a list of prioritized locators) isreceived from the content management system. In some embodiments, thecontent locator comprises a script that is run by the remote system andincludes a URL (or a list of prioritized URL's) that enables the remotesystem to access content directly from a local content system (or on oneof a plurality of local content systems). In 1104, the content locatoris used to obtain the requested content directly from the local contentsystem. The local content system may have to retrieve the requestedcontent once from a content system, an alternate content system, or anyother appropriate content storage server/system.

FIG. 12 illustrates an embodiment of a process for providing localaccess to managed content. In some embodiments, the process of FIG. 12is implemented on a local content system. In 1200, a request forcontent, the request including a content locator associated with thecontent, is received from a remote system. In 1202, it is determined ifthe requested content is available locally. If the content is notavailable at the local content system, then in 1204 the local contentsystem retrieves the requested content from a content system, analternate content system, or any other appropriate content storageserver/system, using information based at least in part on the contentlocator, and control is transferred to 1206. If the content is availableon the local content system, or once the content has been obtained in1204, in 1206 the content is provided to the remote system based atleast in part on information in the content locator. In someembodiments, a content management system provides to the requestingremote system a content locator that includes, if the content is notalready present at a local content system associated with the requestingremote system, data required by the local content system to obtain acopy of the content from another (e.g., a primary, alternate, remote, orother) content system. In some embodiments, a primary content systemqueried by the content management system maintains and/or has access todata indicating which content is currently available at the localcontent system and for each object whether it is in a valid (e.g., fullyupdated) state. If an object is already available at the local contentsystem (and, in some embodiments, it is determined to be current), thecontent system provides to the content management system a queryresponse that includes data usable by the content management system togenerate a content locator that identifies the object as stored at thelocal content system. If the content system determines the object is notcurrently available from the local content system (or is not up to dateas stored at the local content system), the primary content systemprovides to the content management system data usable by the contentmanagement system to form a content locator that includes data requiredby the local content system to obtain the content (or updates thereto)from the primary content system and/or some other source. In someembodiments the content system generates and provides the locator to thecontent management system.

FIG. 13 illustrates an embodiment of a process for providing localaccess to managed content. In some embodiments, the process of FIG. 13is implemented on a content management system. In the example shown, arequest to write content is received in 1300. In some embodiments, therequest is from a remote system and is received at a content managementsystem. In 1302, information required to respond to the request to writecontent is obtained from an associated content system. In someembodiments, at 1302 a content management system that received therequest received at 1300 sends to a content system associated with theobject to be written, the remote system that made the request, and/or anapplication with which the object is associated, a request forinformation required to enable the remote system to write the objectdirectly to a local content system. In some embodiments, if the contentto be written is new, a new object is instantiated at a primary contentsystem to represent the content and the information obtained at 1302includes data associated with the newly instantiated object. In 1304, acontent locator (or a list of prioritized locators) based at least inpart on the information obtained at 1302 is forwarded to the remotesystem. The content locator (or a list of prioritized locators) enablesthe remote system to write the content directly to a local contentsystem (or one of a plurality of local content systems). The localcontent system may have to transfer the requested content once at alater time to a content system, such as the content system from whichthe information obtained in 1302 was obtained, an alternate contentsystem, or any other appropriate content storage server/system. In someembodiments, writing directly to the local content system includes datatransfers through multiple intermediate nodes of a data communicationnetwork such as the internet, a local area network, a wide area network,or any other network for transferring data. In some embodiments, thecontent management system that manages the content in a content systemand in one or more local content systems ensures that the content in thecontent system and the local content systems are appropriately kept upto date, including by transferring content between the content systemand local content system(s) as necessary.

FIG. 14 illustrates an embodiment of a process for accessing managedcontent locally. In some embodiments, the process of FIG. 14 isimplemented on a remote host, such as remote system 500 of FIG. 5 . Inthe example shown, a request to write content is sent to a contentmanagement system in 1400. Examples of a request to write contentinclude a request modify a specific file or object and/or to add orotherwise associate a new object with the content managed by the contentmanagement system. In 1402, a content locator (or list of prioritizedcontent locators) is received from the content management system. Insome embodiments, the content locator comprises a script that is run bythe remote system and includes a URL (or prioritized list of URL's) thatenables the remote system to write content through an acceleratedcontent server on a local caching storage device. In variousembodiments, the content locator is a Java™ script or any otherexecutable or self-executing piece of code or script. In 1404, thecontent locator is used to write the content directly to one of aplurality of local content system, where the local content system mayhave to transfer the requested content once at a later time to a contentsystem, an alternate content system, or any other appropriate contentstorage server/system. In some embodiments, the remote system spawns aclient to receive the content locator and write the content to the localcontent system using the content locator. The client also handleserrors, picks up data transfers from where they left off after aninterruption, and handles the situation when the local content systemthat the content is being transferred to is no longer available (e.g.selecting in conjunction with the content management system anotherlocal content system, for example, the next local content system in theprioritized list).

FIG. 15 illustrates an embodiment of a process for providing localaccess to managed content. In some embodiments, the process of FIG. 15is implemented on a local content system. In 1500, a request to writecontent, the request including a content locator, is received from aremote system. In 1502, the content desired to be written is receivedfrom the remote system and stored locally. In 1504, a content system isprovided with the content that was requested to be written. In variousembodiments, the content is written to a content system at the requestof the content management system, at a time determined by the localcontent system, or on a periodic or continuous basis (i.e., as data iswritten). In some embodiments, the content is written to one or morecontent systems based at least in part on information in and/orassociated with the content locator.

While a number of the examples described in detail above involve requestto retrieve and/or write content, the technique described herein may beused to enable a host to perform any desired operation with respect tomanaged content through direct communication with a local contentsystem, such as a local cache server.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

The invention claimed is:
 1. A method for providing access to managedcontent, the method comprising: receiving, from a remote system by alocal content system operating on a computer, a request to writecontent, the request containing a content locator; receiving, by thelocal content system, the content from the remote system, the contentmanaged by a content management system; locally storing, by the localcontent system, the content from the remote system; and providing, bythe local content system, the content to a content system based at leastin part on information in or associated with the content locator fromthe request received from the remote system, wherein the content iswritten to the content system at request of the content managementsystem, at a time determined by the local content system, on a periodicbasis, or on a continuous basis as the content is received from theremote system.
 2. The method according to claim 1, further comprising:selecting, from a plurality of content systems storing content managedby the content management system, the local content system to interactwith the remote system based on at least one of: a distance between thelocal content system and the remote system; available bandwidth of thelocal content system; access speed between the remote system and thelocal content system; a locator or a prioritized list of locators usablefor writing the content to one or more local content systems; arelationship with the remote system; an association with a branchoffice; an association with a geographic region; an association with anInternet Service Provider; or a range of Internet Protocol addresses. 3.The method according to claim 1, wherein the content locator is providedby the content management system to the remote system.
 4. The methodaccording to claim 1, wherein the local content system comprises a localcache server associated with a geographic area, region, or sub-networkwith which the remote system is associated.
 5. The method according toclaim 1, wherein the content management system and the content systemare implemented in one physical computer system.
 6. The method accordingto claim 1, wherein the local content system and the content system areimplemented in one physical computer system.
 7. The method according toclaim 1, wherein the local content system and the content system areimplemented in one physical computer system and wherein the remotesystem or a user of the remote system has permission to store thecontent to the local content system.
 8. A local content system forproviding access to managed content, the local content systemcomprising: a processor; a non-transitory computer-readable medium; andinstructions stored on the non-transitory computer-readable medium andtranslatable by the processor for: receiving, from a remote system, arequest to write content, the request containing a content locator;receiving the content from the remote system, the content managed by acontent management system; locally storing the content from the remotesystem; and providing the content to a content system based at least inpart on information in or associated with the content locator from therequest received from the remote system, wherein the content is writtento the content system at request of the content management system, at atime determined by the local content system, on a periodic basis, or ona continuous basis as the content is received from the remote system. 9.The system of claim 8, wherein the instructions are further translatableby the processor for: selecting, from a plurality of content systemsstoring content managed by the content management system, the localcontent system to interact with the remote system based on at least oneof: a distance between the local content system and the remote system;available bandwidth of the local content system; access speed betweenthe remote system and the local content system; a locator or aprioritized list of locators usable for writing the content to one ormore local content systems; a relationship with the remote system; anassociation with a branch office; an association with a geographicregion; an association with an Internet Service Provider; or a range ofInternet Protocol addresses.
 10. The system of claim 8, wherein thecontent locator is provided by the content management system to theremote system.
 11. The system of claim 8, wherein the local contentsystem comprises a local cache server associated with a geographic area,region, or sub-network with which the remote system is associated. 12.The system of claim 8, wherein the content management system and thecontent system are implemented in one physical computer system.
 13. Thesystem of claim 8, wherein the local content system and the contentsystem are implemented in one physical computer system.
 14. The systemof claim 8, wherein the local content system and the content system areimplemented in one physical computer system and wherein the remotesystem or a user of the remote system has permission to store thecontent to the local content system.
 15. A computer program product forproviding access to managed content, the computer program productcomprising a non-transitory computer-readable medium storinginstructions translatable by a processor for: receiving, from a remotesystem, a request to write content, the request containing a contentlocator; receiving the content from the remote system, the contentmanaged by a content management system; locally storing the content fromthe remote system; and providing the content to a content system basedat least in part on information in or associated with the contentlocator from the request received from the remote system, wherein thecontent is written to the content system at request of the contentmanagement system, at a time determined by the local content system, ona periodic basis, or on a continuous basis as the content is receivedfrom the remote system.
 16. The computer program product of claim 15,wherein the instructions are further translatable by the processor for:selecting, from a plurality of content systems storing content managedby the content management system, the local content system to interactwith the remote system based on at least one of: a distance between thelocal content system and the remote system; available bandwidth of thelocal content system; access speed between the remote system and thelocal content system; a locator or a prioritized list of locators usablefor writing the content to one or more local content systems; arelationship with the remote system; an association with a branchoffice; an association with a geographic region; an association with anInternet Service Provider; or a range of Internet Protocol addresses.17. The computer program product of claim 15, wherein the contentlocator is provided by the content management system to the remotesystem.
 18. The computer program product of claim 15, wherein the localcontent system comprises a local cache server associated with ageographic area, region, or sub-network with which the remote system isassociated.
 19. The computer program product of claim 15, wherein thecontent management system and the content system are implemented in onephysical computer system.
 20. The computer program product of claim 15,wherein the local content system and the content system are implementedin one physical computer system.